var fs = require('fs')
var path = require('path')

// ./a.txt 相对于执行node命令所处的终端路径
// 相对路径
fs.readFile('./a.txt','utf8',function(err,data){
    if(err) {
        throw err
    }
    console.log(data)
})

// 绝对路径
// fs.readFile('F:/德生/node/node/06/code/foo/a.txt', 'utf8', function (err, data) {
//     if (err) {
//         throw err
//     }
//     console.log(data)
// })

console.log(__dirname) // F:\德生\node\node\06\code\foo
console.log(__dirname + '/a.txt')  // F:\德生\node\node\06\code\foo/a.txt

// 使用__dirname动态获取文件路径
// fs.readFile(__dirname + '/a.txt', 'utf8', function (err, data) {
//     if (err) {
//         throw err
//     }
//     console.log(data)
// })

// 使用path.join进一步优化
// path.join()方法是将多个参数字符串合并成一个路径字符串
// console.log(path.join(__dirname,'a','b'));   假如当前文件的路径是E:/node/1,那么拼接出来就是E:/node/1/a/b
// console.log(path.join(__dirname,'/a','/b','..'));  路径开头的/不会影响拼接，..代表上一级文件，拼接出来的结果是：E:/node/1/a
fs.readFile(path.join(__dirname,'/a.txt'), 'utf8', function (err, data) {
    if (err) {
        throw err
    }
    console.log(data)
})

console.log('resolve===', path.resolve())

// path.resolve
// 作用：把一个路径或路径片段的序列解析为一个绝对路径。相当于执行cd操作。

// 假如__dirname的路径为\test
let myPath = path.resolve(__dirname,'/img/so');
let myPath2 = path.resolve(__dirname,'./img/so');
let myPath3=path.resolve('/foo/bar', './baz');
let myPath4=path.resolve('/foo/bar', '/tmp/file/');
 
console.log(__dirname); // \test        
console.log(myPath);    // \img\so           cd /img/so/ 新打开目录 
console.log(myPath2);   // \test\img\so      cd ./ 打开当前目录下
console.log(myPath3);   // \foo\bar\baz      新打开目录/foo/bar  -> 打开当前目录下baz
console.log(myPath4);   // \tmp\file         cd /tmp/file/新打开目录